package com.lin.filegraph.utils.parser.astvisitor;

import com.lin.filegraph.utils.parser.node.JEnumConstantNode;
import com.lin.filegraph.utils.parser.node.JEnumNode;
import org.eclipse.jdt.core.dom.EnumConstantDeclaration;
import org.eclipse.jdt.core.dom.EnumDeclaration;

import java.lang.reflect.Modifier;
import java.util.List;

/**
 * @description:
 * @author: linhuaixu
 * @time: 2023/5/18 14:14
 */

public class EnumConstantVisitor {
    private JEnumNode enumNode;

    public EnumConstantVisitor(JEnumNode enumNode) {
        super();
        this.enumNode = enumNode;
    }

    public void traverseEnumConstants() {
        EnumDeclaration enumDeclaration = enumNode.getEnumDeclaration();
        List<EnumConstantDeclaration> listEnumConstant = enumDeclaration.enumConstants();
        for (EnumConstantDeclaration enumConstant : listEnumConstant) {
            visit(enumConstant);
        }

    }

    private void visit(EnumConstantDeclaration node) {
        String strEnumConstantName = node.getName().getFullyQualifiedName();
        String strModifier = Modifier.toString(node.getModifiers());
        List<Object> listArguments = node.arguments();
        JEnumConstantNode enumConstantNode = new JEnumConstantNode(enumNode.getFilePath(), node, strEnumConstantName,
                strModifier, listArguments);
        enumNode.addChildNode(enumConstantNode);
    }

}

